cmake_minimum_required(VERSION 3.16)

project(stm32iap_desktop VERSION 0.1 LANGUAGES CXX)

add_compile_options(-fpermissive)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)

qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(appstm32iap_desktop
    main.cpp
    icon.rc
)

qt_add_qml_module(appstm32iap_desktop
    URI stm32iap_desktop
    VERSION 1.0
    QML_FILES Main.qml
    SOURCES
    SOURCES backend.h backend.cpp
    SOURCES iap/include/md5.h iap/src/md5.cpp
    SOURCES iap/include/ymodem.h iap/src/ymodem.cpp
    SOURCES iap/include/iap_udp.h iap/src/iap_udp.cpp
    SOURCES iap/include/iap_file.h iap/src/iap_file.cpp
    SOURCES iap/include/iap.h iap/src/iap.cpp
    RESOURCES icon.rc
)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(appstm32iap_desktop PROPERTIES
#    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appstm32iap_desktop
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(appstm32iap_desktop
    PRIVATE Qt6::Quick
)

include(GNUInstallDirs)
install(TARGETS appstm32iap_desktop
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
